Few individuals have had a greater effect on the personal computer industry than Alan Shugart. Generally credited with inventing the floppy drive while working for IBM in the late 1960s, he later founded Shugart Associates for the purpose of developing and manufacturing floppy drives. In 1974, shortly after Mr. Shugart's departure from the company, Shugart Associates introduced the 51/4-inch mini-floppy diskette drive, which rapidly supplanted the earlier 8-inch floppy drives and eventually became the standard floppy drives for the early PCS. The floppy interface developed by Shugart Associates was used by IBM in the original IBM PC, and is still the basis of all PC floppy drive interfaces. In 1979, Shugart and Finis Conner founded Seagate Technology. By the end of the year, Seagate had introduced the 5-megabyte ST-506 drive, which is now recognized as the father of all PC hard disk drives. This was followed by the 10-megabyte ST-412 drive, which IBM adopted for the original XT personal computer. The ST-506/412 interface developed by Seagate was the de facto hard disk interface standard for many years, and served as the basis for the ESDI and IDE interfaces as well.
Though Alan Shugart and the companies which he established are widely known for disk drive innovation, it is less well known that the Small Computer Systems Interface (SCSI) was created by Shugart Associates. Originally called the Shugart Associates System Interface (SASI), it received its present name when formally approved by the ANSI committee in 1986. A revised SCSI-2 standard was approved by the same committee in 1994, and a still newer revision called SCSI-3 is under development. The SCSI interface is not a device-level interface, but a systems-level interface. The SCSI standard defines the physical and electrical parameters of a parallel I/O bus used to connect computers and peripheral devices in daisy-chain fashion. The standard supports devices such as hard disk drives, tape drives, ZIP drives, CD-ROM drives, graphics scanners and other peripheral devices. The original SCSI bus standard supports as many as eight physical devices, which are usually called SCSI IDs. The newer SCSI-2 bus standard, on the other hand, supports as many as sixteen devices. For either standard, a host adapter which counts as one of the physical devices, functions as the gateway between the SCSI bus and the personal computer system bus. The SCSI bus itself does not talk directly with devices connected thereto, but instead communicates with a controller that front-ends each device. The host adapter is either plugged into or integrated into the system bus. Most personal computer systems support up to four host adapters, each of which under the original SCSI standard may be connected to a total of seven peripheral devices, for a total of 28 peripheral devices. For SCSI-2 implementations, a total of 4.times.15, or 60, peripheral devices may be coupled to the system bus.
By providing no expansion slots in the early Macintosh computers Apple Computer retained total control over system configuration, architecture and upgrades. As a result, most corporations ignored Apple's offerings. As an inexpensive way out of this bind, Apple added expandability to its closed Macintosh system by incorporating a SCSI port in the Mac Plus system. Peripheral devices could then be interfaced to its slotless Macs.
SCSI was slow to catch on in the world of IBM and IBM-compatible PCS because those systems have always been expandable. With eight bus slots supporting different devices and controllers, it seemed that SCSI was not needed. However, because of the great expandability SCSI offers, and because of the availability of hundreds of devices with built-in SCSI controllers, it has rapidly gained popularity in that arena. The primary advantage of expansion via SCSI in a PC system is the capability to chain a string of peripherals from a single adapter card, thus saving card slots inside the PC and limiting the proliferation of IRQs, DMAs and I/O memory addresses.
One problem with the original SCSI-1 standard was that many of the commands and features were optional. Thus, there was no assurance that a particular peripheral would support the expected commands. As a result of this problem, the SCSI-2 standard defines a set of 18 basic SCSI commands called the Common Command Set (CCS), which became the minimum set of commands supports by all peripherals. In addition to formal support for CCS, SCSI-2 provided additional definitions for commands to access CD-ROM drives (and their audio capabilities), tape drives, removable drives, optical drives, and several other peripherals. In addition, an optional higher speed called Fast SCSI-2 and a 16-bit version called Wide SCSI-2 were defined. Another feature of SCSI-2 is command queuing, which enables a device to accept multiple commands and execute them in the order that the device deems most efficient. This feature is most beneficial for multi-tasking operating systems which can send several requests on the SCSI bus at the same time.
Each data transfer on a SCSI bus is checked for parity errors. Thus, an 8-bit SCSI bus includes a ninth parity bit, while a 16-bit SCSI bus includes an additional two parity bits. In addition to the nine or eighteen data signal lines, a SCSI bus also includes multiple lines for ground, one for terminal power, and one line each for the signals ATN, BSY, ACK, RST, MSG, SEL, C/D, REQ and I/O. As multiple physical devices may share the SCSI bus, data is transferred in bursts so that the communication path may be used more efficiently. A maximum burst length is defined. However, not all data transfers are multiples of the burst length. That is, an entire data transfer may be less than the burst length or it may fall between multiples of the burst length. Originally, if a data transfer over the SCSI bus failed a parity check, an error message was generated, indicating that the data transfer had failed. Depending on the operating system, such a situation would, at best, require a repeat of the operation for which the data transfer had failed or, at worst, result in a system crash requiring a reboot with loss of data. In order to avoid such results, data transfers over SCSI buses are now generally managed by software routines which keep track of the number of bursts in each transfer, the size of less-than-full bursts or the filling of incomplete bursts with dummy bytes, the number of bursts successfully transferred and the resending of bursts received with parity errors. Though relatively successful in smoothing the transfer of data on the SCSI bus, these software routines require system overhead, in addition to reducing data transfer speed over the SCSI bus.
What is needed is a hardware implementation for managing burst transfers over the SCSI bus. Hardware-managed transfers have the potential for greatly improving data transfer efficiency and speed.